package com.mhg.threadpool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Demo_01 {

	public static void main(String[] args) {
		//static ExecutorService newCachedThreadPool() 无界限线程池 可以自动回收线程
		/*
		 * 特点 
		 * 线程池为无限大 当执行第二个任务时 第一个任务 如果已经执行完毕
		 * 会重复使用执行第一个任务的线程 而不会每次都创建新线程
		 * 如果现有的线程都没有可用的 则创建一个新的线程 并添加到线程池中
		 * */
		ExecutorService cached = Executors.newCachedThreadPool();
		for(int i=0;i<10;i++){
			final int index = i;
			try {
				Thread.sleep(index*500);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			//提交一个Runnable 任务 用于执行  使用Executors 的 execute方法 完成
			cached.execute(new Runnable() {
				
				@Override
				public void run() {
					System.out.println(Thread.currentThread().getName()+"...."+index);
				}
			});
		}
		//关闭线程池
		cached.shutdown();
	}

}
